Programming Assignment Policies
Unless you are specifically instructed otherwise, you must comply with the
following policies regarding programming assignments.
    
1 Collaboration
    The source code you submit must be entirely your work [with,
    perhaps, assistance from the instructor(s) and/or lab
    assistant(s)]; no part of it may be the work of anyone but you.
    If the source code contains work that is based on help you
    received from an instructor or lab assistant then you must make
    note of it in the documentation for the relevant class(es).
    
    One way to ensure this is quite straightforward -- when talking to
    other students or friends, never refer to code written for the
    programming assignment, either directly or indirectly. In other
    words, you can ensure that the source code that you submit is
    entirely your work by not talking to anyone else about source code
    written for the assignment, errors generated by compiling or
    running source code written for the assignment, or the output
    generated by executing code written for the assignment. (It is
    possible to have very detailed conversations about the topics
    covered in the programming assignments, and the rest of the
    course, without ever referring to the source code.)
    
    Automated tools (like, for example, 
    Moss) may be
    used on any submission (including "early" submissions), at any
    time, to detect inappropriate collaboration and to determine the
    originality of submissions.
    
 
2 Multi-Part Assignments
    Some programming assignments will have multiple parts.  Multi-part
    programming assignments must be completed in order.  That is,
    before starting Part \(i+1\) you must first successfully
    submit Part \(i\). If you do not successfully submit
    Part \(i\) you will receive a grade of 0 on all parts
    after \(i\). (Note: The definition of "successfully" may
    depend on the assignment. For example, on a Web-CAT submission,
    your code must satisfy all of the essential qualities described
    below. On a Canvas submission, you must earn the minimum score
    needed to proceed.)
    
    Some multi-part assignments may have different due dates for
    different parts (to force you to start early and, hopefully, learn
    the benefits of starting early). Other multi-part assignments may
    have one due date for all of the parts (to give you more
    flexibility; hopefully you will still start early and submit the
    different parts as you complete them).
    
    Make sure you understand the "late submission" rules for
    multi-part assignments.
    
 
3 Submission
    Obviously, all of the programming assignments will involve the
    creation of code. All code:
    
- 
    Must be submitted electronically using
    Web-CAT.  
    
 
- 
    Must be attested to using Canvas.
    
 
    In addition, parts of some programming assignments may require you
    to answer questions of various kinds.  These parts must be
    submitted using
    Canvas.
    
 
4 Number of Web-CAT Submissions
    Web-CAT is a submission tool, not a testing tool. That is, it
    tests your code for purposes of assessment, not to verify the
    correctness of your code and not to assist in debugging. Testing
    and debugging are an important part of the software engineering
    process, and you must be able to test and debug software in order
    to succeed in this course (not to mention subsequent courses and
    as a practicing programmer/software engineer).
  
    
    To prevent you from relying on Web-CAT too heavily, individual
    assignments may have a maximum number of submissions (perhaps
    after a certain date) and/or points may be deducted for each
    submission.
    
    You are responsible for knowing the submission rules for each
    assignment.
    
 
5 Grading
    Solutions to programming assignments will be graded on a 100-point
    scale (i.e., the minimum possible grade is 0 and the maximum
    possible grade is 100).  Points will be deducted for a variety of
    reasons, including: failing the tests conducted as part of the
    electronic submission process, failing to conform to the course
    style guide, failing to be properly documented, poor design, poor
    implementation, and inelegance.
      
5.1 Late Penalties
      No assignment (or part thereof) may be submitted late.
      In other words, you will receive a grade of 0 on any part of 
      an assignment that is submitted after the due date/time.
      
      This rule applies to both single-part assignments 
      and multi-part assignments (regardless of whether the parts are 
      due on different days/times or the same day/time).
      
 
5.2 Essential Qualitites of Code
      There are several other particularly important grading policies
      that you should be aware of:
      
- 
        You will receive a grade of 0 on any code that does not
        satisfy all of the correctness tests.
        
 
- 
        You will receive a grade of 0 on any code that does not
        satisfy all of the static analysis checks (i.e., does not satisfy
        the style checker).
        
 
      In other words, you will receive a grade of 0 if Web-CAT
      identifies any "deductions" using either its correctness/testing tools
      or its static analysis/style tools.
      
      Hence, it is incumbent on you to test your code and
      ensure that it executes correctly before you submit it.
      In addition, it is incumbent on you to use a style checker
      to ensure that your code conforms to the course style guide
      before you submit it.
      
 
5.3 Honor Code
      If you violate the University's Honor Code (at any time) you will
      receive a grade of F for the course, other penalties may
      be imposed, and the violation will be reported to the Honor
      Council.
      
 
6 Due Dates and Times
    You are responsible for ensuring that your assignments are
    submitted on time. You should be aware that electronic submission
    systems may only be able to process a few submissions per
    minute. This means that, when there are hundreds of students in
    different courses submitting at the same time, it might take an
    hour or more for a submission to be processed.
    
Your submission must be processed/checked by Web-CAT before the
    time that it is due. It is not enough to have it "in the
    queue" before the deadline.
    
    In other words, you must recognize that the system might be severely 
    congested and submit yout code early enough that the processing
    time will not be a problem. (This is not unlike a situation in which
    you need to be someplace at a specific time and you know that the
    roads might be congested. You are responsible for departing early enough;
    you must select a departure time that accounts for the congestion.)
    
 
7 Hardship Exceptions
    Situations may arise during the course of the semester that make
    it difficult or impossible for you to complete an assignment on
    time (e.g., illness, hardware failures, travel problems). To
    accommodate these situations, each student has one "excused submission"
    that may be applied to any assignment.
    
    If you want to use your "excused submission", you must inform the 
    instructor, by email, within 24 hours of the relevant due date/time.
    
    In general, you should not use your "excused submission" early in
    the semester for non-emergency situations, since you may need it
    to deal with a more important situation later. That is, in general, it is
    better to end the semester with an unused "excused submission" than to not
    have it for a real emergency.
    
    Note that this policy is not equivalent to dropping the lowest
    programming assignment grade. You must request the "excused submission"
    at the time it is needed.
    
 
8 Definitions
    Terms, equations, concepts, etc... often have multiple definitions.
    Whenever there is any ambiguity, you must use the definitions that
    are provided with the assignment.
    
9 Going Further
    Programming assignments often give you an opportunity to "Go
    Further".  The questions/problems/tasks in the "Going Further"
    section are neither required nor for extra credit. They are an
    optional way for you to either: challenge yourself, gain a deeper
    understanding of the material in the programming assignment, or
    gain experience with material that was not covered in the
    programming assignment.  You may choose to complete all, some, or
    none of them; it is entirely up to you.